package ws.sentiment;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.function.IntFunction;

import model.Pair;

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class SentimentPair {

//	@SuppressWarnings("unchecked")
//	protected static List<Pair> pair(WSResponse response, List<Pair> pairs) {
//
//		return Arrays.asList(pairs
//				.parallelStream()
//				.map(pair -> {
//					try {
//						Connection con = Jsoup.connect(pair.getUrl());
//						response.getCookies().forEach(c -> {
//							con.cookie(c.getName(), c.getValue());
//						});
//
//						Document doc;
//
//						doc = con.timeout(3000).post();
//
//						// Logger.debug(String.format(
//						// "Sentiment positive for %s: %d",
//						// pair.name,
//						// Integer.parseInt(doc.select("div[progress]").attr(
//						// "progress"))));
//
//						pair.sentiment = Integer.parseInt(doc.select(
//								"div[progress]").attr("progress"));
//					} catch (IOException e) {
//						// TODO Auto-generated catch block
//						e.printStackTrace();
//					}
//					return pair;
//
//				}).toArray());
//
//	}
	
	public static Pair pair(Pair pair) {
		
		return WsSentiment.getLogin().map(response->{
			
			try {
				Connection con = Jsoup.connect(pair.getUrl());
				response.getCookies().forEach(c -> {
					con.cookie(c.getName(), c.getValue());
				});

				Document doc;

				doc = con.timeout(3000).post();

				// Logger.debug(String.format(
				// "Sentiment positive for %s: %d",
				// pair.name,
				// Integer.parseInt(doc.select("div[progress]").attr(
				// "progress"))));

				pair.sentiment = Integer.parseInt(doc.select(
						"div[progress]").attr("progress"));
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return pair;
			
		}).get(1000,TimeUnit.SECONDS);
	}
	
	public static Pair pairWithResp(Pair pair) {
		
		try {
			Connection con = Jsoup.connect(pair.getUrl());
			pair.response.getCookies().forEach(c -> {
				con.cookie(c.getName(), c.getValue());
			});

			Document doc;

			doc = con.timeout(3000).post();

			// Logger.debug(String.format(
			// "Sentiment positive for %s: %d",
			// pair.name,
			// Integer.parseInt(doc.select("div[progress]").attr(
			// "progress"))));

			pair.sentiment = Integer.parseInt(doc.select(
					"div[progress]").attr("progress"));
		} catch (Exception e) {			
			//e.printStackTrace();
			pair.sentiment=50;
		}
		return pair;

	}

	
	public static List<Pair> listPair(List<Pair> pairs) {
		
		List<Pair> res=Arrays.asList(pairs.parallelStream().map(SentimentPair::pairWithResp).filter(SentimentFilter::filter).toArray(Pair[]::new));
		
		System.out.println(res);
		
		return res;
		
		/*
		return WsSentiment.getLogin().map(response->{
			
			try {
				Connection con = Jsoup.connect(pair.getUrl());
				response.getCookies().forEach(c -> {
					con.cookie(c.getName(), c.getValue());
				});

				Document doc;

				doc = con.timeout(3000).post();

				// Logger.debug(String.format(
				// "Sentiment positive for %s: %d",
				// pair.name,
				// Integer.parseInt(doc.select("div[progress]").attr(
				// "progress"))));

				pair.sentiment = Integer.parseInt(doc.select(
						"div[progress]").attr("progress"));
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return pair;
			
		}).get(1000,TimeUnit.SECONDS);
		*/
	}
}
